package inicializacao;

import java.util.List;

import base.Inicializacao;
import base.Particula;
import base.Problema;

public class InicializacaoNormalizada implements Inicializacao {

	@Override
	public void executar(int tamanhoPop, List<Particula> enxame, Problema problema) {
		double[] menorValor = problema.getValorMinimo();
		double[] maiorValor = problema.getValorMaximo();

		for (int i = 0; i < tamanhoPop; i++) {
		
			double[] pos = new double[problema.getNumeroDimensoes()];
			double[] vel = new double[problema.getNumeroDimensoes()];
			for(int currentDim=0; currentDim<pos.length; currentDim++){
				pos[currentDim] = menorValor[currentDim] + 
						((maiorValor[currentDim]-menorValor[currentDim]) * Math.random());
				
				double maxVel = Math.abs(maiorValor[currentDim] - menorValor[currentDim]);
				double minVel = -1*maxVel;
				
				vel[currentDim] = minVel + (maxVel-minVel)*Math.random();
			}
			
			enxame.add(new Particula(pos,vel));
		}

	}

}
